package main.niit

import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions._

import java.util.Properties

//本业务分析的每个汽车品牌平均售价 最大最小售价 以及售价方差
object sellingPrice {
  def main(args: Array[String]): Unit = {
    Logger.getLogger("org").setLevel(Level.OFF)
    val spark =SparkSession.builder()
      .appName("sellingPrice")
      .master("local[*]")
      .getOrCreate()

    val jdbcDF =spark.read.format("jdbc")
      .option("url","jdbc:mysql://192.168.56.104:3306/cardata?useSSL=false")
      .option("driver","com.mysql.jdbc.Driver")
      .option("dbtable","data")
      .option("user","root")
      .option("password","root")
      .load()

    import spark.implicits._
    val prop =new Properties()
    prop.put("user","root")
    prop.put("password","root")
    prop.put("driver","com.mysql.jdbc.Driver")


    val filterDF=jdbcDF.select("汽车品牌","售卖价格").filter($"售卖价格">0)
    val resultDF=filterDF
      .groupBy("汽车品牌")
      .agg(
        avg("售卖价格").alias("平均售价"),
        max("售卖价格").alias("max_售卖价格"),   // 计算每个品牌的最高售价，并将结果列命名为 "max_售卖价格"
        min("售卖价格").alias("min_售卖价格"),   // 计算每个品牌的最低售价，并将结果列命名为 "min_售卖价格"
        variance("售卖价格").alias("售价方差")   // 计算每个品牌的售价方差，并将结果列命名为 "售价方差"
      )

    resultDF.write.mode("append")
      .jdbc("jdbc:mysql://192.168.56.104:3306/cardata?useSSL=false","cardata.sellingPrice",prop)





  }

}
